那我們該怎麼在各種進位間轉換呢?在 java.io. PrintStream 和 java.lang.Integer 類別裡,都有對應的方法可以使用
如果只是想將某個整數值以8,10,16這三種進位輸出到 PrintStream (例如 System.out) 裡的話,我們可以用其中的 printf 方法加上格式化字串語法 Formatter String Syntax 來轉換:
package idv.jacky.ironman4;
public class Day10Example {
public static void main(String[] args) {
int d = 0b11000000111001; //2進位的12345
System.out.printf("%s 的10進位是 %d %n", d, d);
System.out.printf("%s 的16進位是 %x %n", d, d);
System.out.printf("%s 的 8進位是 %o %n", d, d);
}
}
上面的程式碼裡,你看到的 %d, %x, %o 就是 Java 用來表示 10,16,8進位的格式化字串語法。而 %s 則是用來表示 String,%n 是換行符號。printf 方法會先讀取第一個字串參數 "%s 的16進位是 %x %n",然後將後面的幾個參數,依序讀取,照 % 的格式顯示出來。執行結果如下:
你會問說,那二進位呢?呃…很抱歉,格式化字串語法裡並沒有輸出二進位的格式。
其它詳細的格式化字串語法及其使用方式,請參考相關書籍或是 Java Doc (http://download.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax)。